package com.dongdong.service.impl;

import cn.hutool.core.util.StrUtil;
import com.dongdong.mapper.TbTypeTemplateMapper;
import com.dongdong.model.TbTypeTemplate;
import com.dongdong.model.TbTypeTemplateExample;
import com.dongdong.result.PageBean;
import com.dongdong.result.PageResult;
import com.dongdong.service.TypeTemplateService;
import com.dongdong.vo.TypeTemplateVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class TypeTemplateServiceImpl implements TypeTemplateService {

    @Autowired
    private TbTypeTemplateMapper tbTypeTemplateMapper;

    /**
     * 分页模糊查询模版
     * @param bean
     * @return
     */
    @Override
    public PageResult<TypeTemplateVO> FindTypeTemplateList(PageBean<TypeTemplateVO> bean) {
        TbTypeTemplateExample tbTypeTemplateExample = new TbTypeTemplateExample();
        TbTypeTemplateExample.Criteria criteria = tbTypeTemplateExample.createCriteria();
        if (!StrUtil.isEmpty(bean.getParms().getName())){
            criteria.andNameLike("%" + bean.getParms().getName() + "%");
        }
        PageHelper.startPage(bean.getPageNumber(),bean.getPageSize());
        List<TbTypeTemplate> tbTypeTemplates = tbTypeTemplateMapper.selectByExample(tbTypeTemplateExample);
        PageInfo<TbTypeTemplate> info = new PageInfo<>(tbTypeTemplates);
        List<TypeTemplateVO> collect = info.getList().stream().map((x) -> {
            TypeTemplateVO typeTemplateVO = new TypeTemplateVO();
            BeanUtils.copyProperties(x, typeTemplateVO);
            return typeTemplateVO;
        }).collect(Collectors.toList());
        return new PageResult<>(info.getPageNum(),info.getPageSize(),info.getTotal(),collect);
    }

    /**
     * 增加模版
     * @param typeTemplateVO
     */
    @Override
    public void InsertTypeTemplate(TypeTemplateVO typeTemplateVO) {
        TbTypeTemplate tbTypeTemplate = new TbTypeTemplate();
        BeanUtils.copyProperties(typeTemplateVO,tbTypeTemplate);
        tbTypeTemplateMapper.insertSelective(tbTypeTemplate);
    }

    /**
     * 修改回显
     * @param id
     * @return
     */
    @Override
    public TypeTemplateVO SelectTypeTemplateById(Long id) {
        TypeTemplateVO typeTemplateVO = new TypeTemplateVO();
        TbTypeTemplate tbTypeTemplate = tbTypeTemplateMapper.selectByPrimaryKey(id);
        BeanUtils.copyProperties(tbTypeTemplate,typeTemplateVO);
        return typeTemplateVO;
    }

    /**
     * 修改模版
     * @param typeTemplateVO
     */
    @Override
    public void UpdateTypeTemplate(TypeTemplateVO typeTemplateVO) {
        TbTypeTemplate tbTypeTemplate = new TbTypeTemplate();
        BeanUtils.copyProperties(typeTemplateVO,tbTypeTemplate);
        tbTypeTemplateMapper.updateByPrimaryKeySelective(tbTypeTemplate);
    }

    /**
     * 删除模版
     * @param id
     */
    @Override
    public void DeleteTypeTemplateById(Long id) {
        tbTypeTemplateMapper.deleteByPrimaryKey(id);
    }
}
